// Copyright 2018 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --harmony-intl-segmenter --harmony-intl-list-format --harmony-locale

let locales = [
  "af-NA",
  "af",
  "af-ZA",
  "agq-CM",
  "agq",
  "ak-GH",
  "ak",
  "am-ET",
  "am",
  "an",
  "ar-001",
  "ar-AE",
  "ar-BH",
  "ar-DJ",
  "ar-DZ",
  "ar-EG",
  "ar-EH",
  "ar-ER",
  "ar-IL",
  "ar-IQ",
  "ar-JO",
  "ar-KM",
  "ar-KW",
  "ar-LB",
  "ar-LY",
  "ar-MA",
  "ar-MR",
  "ar-OM",
  "ar-PS",
  "ar-QA",
  "ar-SA",
  "ar-SD",
  "ar-SO",
  "ar-SS",
  "ars",
  "ar-SY",
  "ar-TD",
  "ar-TN",
  "ar",
  "ar-YE",
  "asa",
  "asa-TZ",
  "as-IN",
  "ast-ES",
  "ast",
  "as",
  "az-AZ",
  "az-Cyrl-AZ",
  "az-Cyrl",
  "az-Latn-AZ",
  "az-Latn",
  "az",
  "bas-CM",
  "bas",
  "be-BY",
  "bem",
  "bem-ZM",
  "be",
  "bez",
  "bez-TZ",
  "bg-BG",
  "bg",
  "bm-ML",
  "bm",
  "bn-BD",
  "bn-IN",
  "bn",
  "bo-CN",
  "bo-IN",
  "bo",
  "br-FR",
  "br",
  "brx-IN",
  "brx",
  "bs-BA",
  "bs-Cyrl-BA",
  "bs-Cyrl",
  "bs-Latn-BA",
  "bs-Latn",
  "bs",
  "ca-AD",
  "ca-ES",
  "ca-FR",
  "ca-IT",
  "ca",
  "ccp-BD",
  "ccp-IN",
  "ccp",
  "ce-RU",
  "ce",
  "cgg",
  "cgg-UG",
  "chr",
  "chr-US",
  "ckb-IQ",
  "ckb-IR",
  "ckb",
  "cs-CZ",
  "cs",
  "cy-GB",
  "cy",
  "da-DK",
  "da-GL",
  "da",
  "dav-KE",
  "dav",
  "de-AT",
  "de-BE",
  "de-CH",
  "de-DE",
  "de-IT",
  "de-LI",
  "de-LU",
  "de",
  "dje-NE",
  "dje",
  "dsb-DE",
  "dsb",
  "dua-CM",
  "dua",
  "dyo-SN",
  "dyo",
  "dz-BT",
  "dz",
  "ebu-KE",
  "ebu",
  "ee-GH",
  "ee-TG",
  "ee",
  "el-CY",
  "el-GR",
  "el",
  "en-001",
  "en-150",
  "en-AG",
  "en-AI",
  "en-AS",
  "en-AT",
  "en-AU",
  "en-BB",
  "en-BE",
  "en-BI",
  "en-BM",
  "en-BS",
  "en-BW",
  "en-BZ",
  "en-CA",
  "en-CC",
  "en-CH",
  "en-CK",
  "en-CM",
  "en-CX",
  "en-CY",
  "en-DE",
  "en-DG",
  "en-DK",
  "en-DM",
  "en-ER",
  "en-FI",
  "en-FJ",
  "en-FK",
  "en-FM",
  "en-GB",
  "en-GD",
  "en-GG",
  "en-GH",
  "en-GI",
  "en-GM",
  "en-GU",
  "en-GY",
  "en-HK",
  "en-IE",
  "en-IL",
  "en-IM",
  "en-IN",
  "en-IO",
  "en-JE",
  "en-JM",
  "en-KE",
  "en-KI",
  "en-KN",
  "en-KY",
  "en-LC",
  "en-LR",
  "en-LS",
  "en-MG",
  "en-MH",
  "en-MO",
  "en-MP",
  "en-MS",
  "en-MT",
  "en-MU",
  "en-MW",
  "en-MY",
  "en-NA",
  "en-NF",
  "en-NG",
  "en-NH",
  "en-NL",
  "en-NR",
  "en-NU",
  "en-NZ",
  "en-PG",
  "en-PH",
  "en-PK",
  "en-PN",
  "en-PR",
  "en-PW",
  "en-RH",
  "en-RW",
  "en-SB",
  "en-SC",
  "en-SD",
  "en-SE",
  "en-SG",
  "en-SH",
  "en-SI",
  "en-SL",
  "en-SS",
  "en-SX",
  "en-SZ",
  "en-TC",
  "en-TK",
  "en-TO",
  "en-TT",
  "en-TV",
  "en",
  "en-TZ",
  "en-UG",
  "en-UM",
  "en-US-POSIX",
  "en-US",
  "en-VC",
  "en-VG",
  "en-VI",
  "en-VU",
  "en-WS",
  "en-ZA",
  "en-ZM",
  "en-ZW",
  "eo",
  "es-419",
  "es-AR",
  "es-BO",
  "es-BR",
  "es-BZ",
  "es-CL",
  "es-CO",
  "es-CR",
  "es-CU",
  "es-DO",
  "es-EA",
  "es-EC",
  "es-ES",
  "es-GQ",
  "es-GT",
  "es-HN",
  "es-IC",
  "es-MX",
  "es-NI",
  "es-PA",
  "es-PE",
  "es-PH",
  "es-PR",
  "es-PY",
  "es-SV",
  "es",
  "es-US",
  "es-UY",
  "es-VE",
  "et-EE",
  "et",
  "eu-ES",
  "eu",
  "ewo-CM",
  "ewo",
  "fa-AF",
  "fa-IR",
  "fa",
  "ff",
  "fi-FI",
  "fil-PH",
  "fil",
  "fi",
  "fo-DK",
  "fo-FO",
  "fo",
  "fr-BE",
  "fr-BF",
  "fr-BI",
  "fr-BJ",
  "fr-BL",
  "fr-CA",
  "fr-CD",
  "fr-CF",
  "fr-CG",
  "fr-CH",
  "fr-CI",
  "fr-CM",
  "fr-DJ",
  "fr-DZ",
  "fr-FR",
  "fr-GA",
  "fr-GF",
  "fr-GN",
  "fr-GP",
  "fr-GQ",
  "fr-HT",
  "fr-KM",
  "fr-LU",
  "fr-MA",
  "fr-MC",
  "fr-MF",
  "fr-MG",
  "fr-ML",
  "fr-MQ",
  "fr-MR",
  "fr-MU",
  "fr-NC",
  "fr-NE",
  "fr-PF",
  "fr-PM",
  "fr-RE",
  "fr-RW",
  "fr-SC",
  "fr-SN",
  "fr-SY",
  "fr-TD",
  "fr-TG",
  "fr-TN",
  "fr",
  "fr-VU",
  "fr-WF",
  "fr-YT",
  "fur-IT",
  "fur",
  "fy-NL",
  "fy",
  "ga-IE",
  "ga",
  "gd-GB",
  "gd",
  "gl-ES",
  "gl",
  "gsw-CH",
  "gsw-FR",
  "gsw-LI",
  "gsw",
  "gu-IN",
  "gu",
  "guz-KE",
  "guz",
  "gv-IM",
  "gv",
  "ha-GH",
  "ha-NE",
  "ha-NG",
  "ha",
  "haw",
  "haw-US",
  "he-IL",
  "he",
  "hi-IN",
  "hi",
  "hr-BA",
  "hr-HR",
  "hr",
  "hsb-DE",
  "hsb",
  "hu-HU",
  "hu",
  "hy-AM",
  "hy",
  "ia-001",
  "ia",
  "id-ID",
  "id",
  "ig-NG",
  "ig",
  "ii-CN",
  "ii",
  "in-ID",
  "in",
  "is-IS",
  "is",
  "it-CH",
  "it-IT",
  "it-SM",
  "it",
  "it-VA",
  "iw-IL",
  "iw",
  "ja-JP",
  "ja",
  "jgo-CM",
  "jgo",
  "jmc",
  "jmc-TZ",
  "jv-ID",
  "jv",
  "kab-DZ",
  "kab",
  "ka-GE",
  "kam-KE",
  "kam",
  "ka",
  "kde",
  "kde-TZ",
  "kea-CV",
  "kea",
  "khq-ML",
  "khq",
  "ki-KE",
  "ki",
  "kkj-CM",
  "kkj",
  "kk-KZ",
  "kk",
  "kl-GL",
  "kln-KE",
  "kln",
  "kl",
  "km-KH",
  "km",
  "kn-IN",
  "kn",
  "kok-IN",
  "ko-KP",
  "ko-KR",
  "kok",
  "ko",
  "ksb",
  "ksb-TZ",
  "ksf-CM",
  "ksf",
  "ksh-DE",
  "ksh",
  "ks-IN",
  "ks",
  "ku-TR",
  "ku",
  "kw-GB",
  "kw",
  "ky-KG",
  "ky",
  "lag",
  "lag-TZ",
  "lb-LU",
  "lb",
  "lg",
  "lg-UG",
  "lkt",
  "lkt-US",
  "ln-AO",
  "ln-CD",
  "ln-CF",
  "ln-CG",
  "ln",
  "lo-LA",
  "lo",
  "lrc-IQ",
  "lrc-IR",
  "lrc",
  "lt-LT",
  "lt",
  "lu-CD",
  "luo-KE",
  "luo",
  "lu",
  "luy-KE",
  "luy",
  "lv-LV",
  "lv",
  "mas-KE",
  "mas",
  "mas-TZ",
  "mer-KE",
  "mer",
  "mfe-MU",
  "mfe",
  "mgh-MZ",
  "mgh",
  "mg-MG",
  "mgo-CM",
  "mgo",
  "mg",
  "mi-NZ",
  "mi",
  "mk-MK",
  "mk",
  "ml-IN",
  "ml",
  "mn-MN",
  "mn",
  "mo",
  "mr-IN",
  "mr",
  "ms-BN",
  "ms-MY",
  "ms-SG",
  "ms",
  "mt-MT",
  "mt",
  "mua-CM",
  "mua",
  "my-MM",
  "my",
  "mzn-IR",
  "mzn",
  "naq-NA",
  "naq",
  "nb-NO",
  "nb-SJ",
  "nb",
  "nds-DE",
  "nds-NL",
  "nds",
  "nd",
  "nd-ZW",
  "ne-IN",
  "ne-NP",
  "ne",
  "nl-AW",
  "nl-BE",
  "nl-BQ",
  "nl-CW",
  "nl-NL",
  "nl-SR",
  "nl-SX",
  "nl",
  "nmg-CM",
  "nmg",
  "nnh-CM",
  "nnh",
  "nn-NO",
  "nn",
  "no-NY",
  "no-NO",
  "no",
  "nus-SS",
  "nus",
  "nyn",
  "nyn-UG",
  "om-ET",
  "om-KE",
  "om",
  "or-IN",
  "or",
  "os-GE",
  "os-RU",
  "os",
  "pa-Arab-PK",
  "pa-Arab",
  "pa-Guru-IN",
  "pa-Guru",
  "pa-IN",
  "pa-PK",
  "pa",
  "pl-PL",
  "pl",
  "ps-AF",
  "ps",
  "pt-AO",
  "pt-BR",
  "pt-CH",
  "pt-CV",
  "pt-GQ",
  "pt-GW",
  "pt-LU",
  "pt-MO",
  "pt-MZ",
  "pt-PT",
  "pt-ST",
  "pt-TL",
  "pt",
  "qu-BO",
  "qu-EC",
  "qu-PE",
  "qu",
  "rm-CH",
  "rm",
  "rn-BI",
  "rn",
  "rof",
  "rof-TZ",
  "ro-MD",
  "root",
  "ro-RO",
  "ro",
  "ru-BY",
  "ru-KG",
  "ru-KZ",
  "ru-MD",
  "ru-RU",
  "ru",
  "ru-UA",
  "rwk",
  "rwk-TZ",
  "rw-RW",
  "rw",
  "sah-RU",
  "sah",
  "saq-KE",
  "saq",
  "sbp",
  "sbp-TZ",
  "sd-PK",
  "sd",
  "se-FI",
  "seh-MZ",
  "seh",
  "se-NO",
  "se-SE",
  "ses-ML",
  "ses",
  "se",
  "sg-CF",
  "sg",
  "sh-BA",
  "sh-CS",
  "shi-Latn-MA",
  "shi-Latn",
  "shi-MA",
  "shi-Tfng-MA",
  "shi-Tfng",
  "shi",
  "sh",
  "sh-YU",
  "si-LK",
  "si",
  "sk-SK",
  "sk",
  "sl-SI",
  "sl",
  "smn-FI",
  "smn",
  "sn",
  "sn-ZW",
  "so-DJ",
  "so-ET",
  "so-KE",
  "so-SO",
  "so",
  "sq-AL",
  "sq-MK",
  "sq",
  "sq-XK",
  "sr-BA",
  "sr-CS",
  "sr-Cyrl-BA",
  "sr-Cyrl-CS",
  "sr-Cyrl-ME",
  "sr-Cyrl-RS",
  "sr-Cyrl",
  "sr-Cyrl-XK",
  "sr-Cyrl-YU",
  "sr-Latn-BA",
  "sr-Latn-CS",
  "sr-Latn-ME",
  "sr-Latn-RS",
  "sr-Latn",
  "sr-Latn-XK",
  "sr-Latn-YU",
  "sr-ME",
  "sr-RS",
  "sr",
  "sr-XK",
  "sr-YU",
  "sv-AX",
  "sv-FI",
  "sv-SE",
  "sv",
  "sw-CD",
  "sw-KE",
  "sw",
  "sw-TZ",
  "sw-UG",
  "ta-IN",
  "ta-LK",
  "ta-MY",
  "ta-SG",
  "ta",
  "te-IN",
  "teo-KE",
  "teo",
  "teo-UG",
  "te",
  "tg-TJ",
  "tg",
  "th-TH",
  "th",
  "ti-ER",
  "ti-ET",
  "ti",
  "tk-TM",
  "tk",
  "tl-PH",
  "tl",
  "to-TO",
  "to",
  "tr-CY",
  "tr-TR",
  "tr",
  "tt-RU",
  "tt",
  "twq-NE",
  "twq",
  "tzm-MA",
  "tzm",
  "ug-CN",
  "ug",
  "uk",
  "uk-UA",
  "ur-IN",
  "ur-PK",
  "ur",
  "uz-AF",
  "uz-Arab-AF",
  "uz-Arab",
  "uz-Cyrl",
  "uz-Cyrl-UZ",
  "uz-Latn",
  "uz-Latn-UZ",
  "uz",
  "uz-UZ",
  "vai-Latn-LR",
  "vai-Latn",
  "vai-LR",
  "vai",
  "vai-Vaii-LR",
  "vai-Vaii",
  "vi",
  "vi-VN",
  "vun",
  "vun-TZ",
  "wae-CH",
  "wae",
  "wa",
  "wo-SN",
  "wo",
  "xh",
  "xh-ZA",
  "xog",
  "xog-UG",
  "yav-CM",
  "yav",
  "yi-001",
  "yi",
  "yo-BJ",
  "yo-NG",
  "yo",
  "yue-CN",
  "yue-Hans-CN",
  "yue-Hans",
  "yue-Hant-HK",
  "yue-Hant",
  "yue-HK",
  "yue",
  "zgh-MA",
  "zgh",
  "zh-CN",
  "zh-Hans-CN",
  "zh-Hans-HK",
  "zh-Hans-MO",
  "zh-Hans-SG",
  "zh-Hans",
  "zh-Hant-HK",
  "zh-Hant-MO",
  "zh-Hant-TW",
  "zh-Hant",
  "zh-HK",
  "zh-MO",
  "zh-SG",
  "zh-TW",
  "zh",
  "zu",
  "zu-ZA"
];

var intlObjectNames = [
  "DateTimeFormat",
  "NumberFormat",
  "Collator",
  "v8BreakIterator",
  "PluralRules",
  "Locale",
  "ListFormat",
  "Segmenter",
  "RelativeTimeFormat"
];

for (let loc of locales) {
  for (let constructor of intlObjectNames) {
    let msg = `new Intl.${constructor}(${loc})`;
    print(msg);
    let obj = new Intl[constructor](loc);
    assertNotNull(obj, msg + ' should not be null');
  }
}
